package com.wzy.server.controller;

import com.wzy.server.pojo.Admin;
import com.wzy.server.pojo.AdminLoginParam;
import com.wzy.server.pojo.RespBean;
import com.wzy.server.service.IAdminService;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;
import java.security.Principal;

/**
 * 登录控制器
 */
@Api(tags = "LoginController")//协议集描述
@RestController
public class LoginController {

	@Autowired
	private IAdminService adminService;

//     协议描述
	@ApiOperation(value = "登录之后返回token")
	@PostMapping("/login")
//	         公用对象                      登陆对象
	public RespBean login(@RequestBody AdminLoginParam adminLoginParam, HttpServletRequest request) {
//		                      返回          用户名           和                密码                     验证码                     请求
		return adminService.login(adminLoginParam.getUsername(), adminLoginParam.getPassword(), adminLoginParam.getCode(), request);
	}


	@ApiOperation(value = "获取当前用户信息")
	@GetMapping("/admin/info")
//	                             获取当前登录的对象
	public Admin getAdminInfo(Principal principal) {
		if (null == principal) {
			return null;
		}
		String username = principal.getName();//用户名
		Admin admin = adminService.getAdminByUserName(username);//根据用户名获取用户对象
//		去掉密码
		admin.setPassword(null);
//		返回给用户角色的信息
		admin.setRoles(adminService.getRoles(admin.getId()));
		return admin;
	}

//退出后返回状态码200，前端删除token的请求头，禁止登录
	@ApiOperation(value = "退出登录")
	@PostMapping("/logout")
	public RespBean logout() {
		return RespBean.success("注销成功！");
	}

}